package com.fqy.gmall.product.service;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fqy.gmall.common.result.Result;
import com.fqy.gmall.model.product.*;
import org.springframework.stereotype.Service;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * User: fqy
 * Date: 2021/9/8
 * Time: 9:20
 * Describe:
 */

public interface ManageService {
    //查询一级目录
    List<BaseCategory1> getCategory1();
    //查询二级目录
    List<BaseCategory2> getCategory2(long category1Id);
    //查询三级目录
    List<BaseCategory3> getCategory3(long category2Id);
    //根据分类Id 获取平台属性数据
    List<BaseAttrInfo> getAttrInfoListById(Long category1Id, Long category2Id, Long category3Id);
    //保存修改或新增后的属性信息以其属性值
    void saveAttrInfo(BaseAttrInfo baseAttrInfo);
    //根据平台属性Id 获取到平台属性值集合
    List<BaseAttrValue> getAttrValueList(Long attrId);
    //根据平台属性Id 获取到平台属性信息
    BaseAttrInfo getBaseAttrInfo(Long attrId);
    //根据分类id查询spuInfo 获取spu分页显示列表
    IPage getSpuInfoPage(Page iPage, SpuInfo spuInfo);
    //添加spu数据回显：获取平台销售属性数据
    List<BaseSaleAttr> getBaseSaleAttrList();
    //添加spu数据大保存
    void saveSpuInfo(SpuInfo spuInfo);
    //根据spuId 获取spuImage 集合
    List<SpuImage> getSpuImageList(Long spuId);
    //根据spuid 回显销售属性，销售属性值！
    List<SpuSaleAttr> getSpuSaleAttrList(Long spuId);
    //添加sku之保存：保存skuInfo
    void saveSkuInfo(SkuInfo skuInfo);

    //商品属性skuInfo分页显示
    IPage<SkuInfo> getSkuInfoPage(Long page, Long limit);
    //上架
    void onSale(Long skuId);
    //下架
    void cancelSale(Long skuId);

    // 商品详情
    // 获取skuInfo 基本信息+ skuImage图片列表！
    SkuInfo getSkuInfo(Long skuId);

    // 商品详情:获取商品价格数据
    BigDecimal getSkuPrice(Long skuId);
    // 商品详情:根据三级分类Id 来获取分类名称等数据
    BaseCategoryView getCategoryName(Long category3Id);
    // 商品详情:根据spuId,skuId 来获取销售信息
    List<SpuSaleAttr> getSpuSaleAttrListById(Long skuId, Long spuId);
    // 商品详情:根据用户所选的销售属性组合 进行页面切换
    Map getValueIdsAndSkuIdToMap(Long spuId);
    // 商品详情:根据spuId 来获取海报信息集合
    List<SpuPoster> getSpuPosterList(Long spuId);
    // 商品详情:获取商品的规格参数：获取商品的平台属性平台属性值！
    List<BaseAttrInfo> getBaseAttrInfoList(Long skuId);

    // 商品首页:获取全部分类信息
//    List<JSONObject> getBaseCategoryList();
    List<JSONObject> getBaseCategoryList();

}
